﻿namespace BootstrapBlazor.Components;

/// <summary>
/// 保存 <see cref="Navbar"/> 组件状态的信息基类
/// </summary>
public record class NavbarBase
{
    /// <summary>
    /// 获得 当前导航栏标识
    /// </summary>
    internal string? Id { get; init; }

    /// <summary>
    /// 获得/设置 切换器、菜单的显示状态
    /// </summary>
    internal bool Visible { get; init; } = true;

    /// <summary>
    /// 获得/设置 如果为true，则当前 <see cref="Navbar"/> 组件将从右往左布局。
    /// </summary>
    internal bool IsRTL { get; init; }

    /// <summary>
    /// 获得/设置 所属 <see cref="Navbar"/> 组件显示模式，当用作侧边栏时，需要垂直显示。
    /// </summary>
    internal NavbarMode Mode { get; init; } = NavbarMode.Horizontal;

    /// <summary>
    /// 获得/设置 所属 <see cref="Navbar"/> 组件的主题
    /// </summary>
    internal NavbarTheme Theme { get; init; } = NavbarTheme.Light;

    /// <summary>
    /// 获得 当前 <see cref="Navbar"/> 组件是否水平显示
    /// </summary>
    internal bool IsHorizontal => Mode == NavbarMode.Horizontal;

    /// <summary>
    /// 获得 当前 <see cref="Navbar"/> 组件是否垂直浮动模式
    /// </summary>
    internal bool IsVerticalSmall => Mode == NavbarMode.VerticalSmall;

    /// <summary>
    /// 获得 当前 <see cref="Navbar"/> 组件是否垂直混合模式
    /// </summary>
    internal bool IsVerticalMixin => Mode == NavbarMode.VerticalMixin;

    /// <summary>
    /// 获得 当前下拉菜单处于混合模式且该条可见
    /// </summary>
    internal bool IsMixinDisplay => IsVerticalMixin && Visible;

    /// <summary>
    /// 获得 当前下拉菜单处于弹出导航模式且该条可见
    /// </summary>
    internal bool IsPopoutDisplay => Mode == NavbarMode.VerticalPopout && Visible;
}
